//引入函数
import { reqSearchGoodsInfoData } from "@/api";
//Vuex主要属性及作用

const state={
//数据源存放地  this.$store.state.xxx调用或者通过mapState把全局的state，getters数据映射到当前组件中
    goodsInfo:{
        
    }
}
const actions={
  //异步操作数据 通过mutation 来操作提交的是mutation 通过this.$store.dispatch()来触发 不直接更改数据状态，可以包含任意的异步操作
    //1.根据参数获取搜索数据
    async getSearchGoodsInfoData({commit},searchParams) {
        const result =await reqSearchGoodsInfoData(searchParams)
        //2判断是否成功
        if(result.code === 200){
            commit('SAVE_GOODS_INFO_DATA',result.data)
        }else {
            console.log(result.message);
        }
    },
   
}
const mutations = {
    //处理数据逻辑的方法全放在这 当触发事件想改变state数据的时候使用  用this.$store.commit调用给这个方法添加一个参数 就是mutation的载荷payload
    //3.存储搜索到的商品
    SAVE_GOODS_INFO_DATA(state,goodsInfo){
        state.goodsInfo = goodsInfo
    },

}
const getters={
    //相当于store的计算属性 主要针对state中数据过滤 用this.$store.getters.xxx调用 可以在多组件之间复用，如果一个状态只在一个组件内使用，可以不使用getters
    //使用getters精简数据
    //1.属性列表
    attrsList(state){
        return state.goodsInfo.attrsList
    },
    //2.商品列表
    goodsList(state){
        return state.goodsInfo.goodsList
    },
    //商品信息总条数
    total(state){
        return state.goodsInfo.total
    },
    
    //3.商品品牌列表
    trademarkList(state){
        return state.goodsInfo.trademarkList
    }

}
export default {
    namespaced:true,//命名空间 区分不同模块
    state,
    actions,
    mutations,
    getters
}
